package com.micro.ai.template.service;

import com.micro.ai.commons.domain.ApiResponse;
import com.micro.ai.commons.domain.PageRequest;
import com.micro.ai.commons.domain.PageResponse;
import com.micro.ai.template.entity.Template;

import java.util.List;
import java.util.Map;

/**
 * 模板搜索服务接口
 * 
 * @author micro-ai
 * @since 0.0.1
 */
public interface TemplateSearchService {

    /**
     * 全文搜索模板
     */
    ApiResponse<List<Template>> fullTextSearch(String keyword, PageRequest pageRequest);

    /**
     * 多条件搜索模板
     */
    ApiResponse<PageResponse<Template>> searchTemplates(Map<String, Object> searchParams, PageRequest pageRequest);

    /**
     * 根据分类搜索模板
     */
    ApiResponse<List<Template>> searchByCategory(Long categoryId, String keyword, PageRequest pageRequest);

    /**
     * 根据标签搜索模板
     */
    ApiResponse<List<Template>> searchByTags(List<String> tags, String keyword, PageRequest pageRequest);

    /**
     * 根据能力搜索模板
     */
    ApiResponse<List<Template>> searchByCapabilities(List<String> capabilities, String keyword, PageRequest pageRequest);

    /**
     * 搜索建议
     */
    ApiResponse<List<String>> getSearchSuggestions(String keyword, Integer limit);

    /**
     * 热门搜索关键词
     */
    ApiResponse<List<String>> getHotSearchKeywords(Integer limit);

    /**
     * 搜索统计
     */
    ApiResponse<Map<String, Object>> getSearchStats();

    /**
     * 索引模板
     */
    ApiResponse<Void> indexTemplate(Template template);

    /**
     * 删除模板索引
     */
    ApiResponse<Void> removeTemplateIndex(Long templateId);

    /**
     * 重建索引
     */
    ApiResponse<Void> rebuildIndex();
}
